int
pideIn(tipoJuego *juego, int *movida, int *elim)
{
        int i;
        int letra;
	int ret;
	char *entrada=NULL;
	char *aux=NULL;
	
	printf("Jugador %d ingrese la accion a realizar\n", juego->turno);

	for(i=0; (letra=getchar())!='\n' && letra!=EOF; i++)
	{
		if(i%10==0)
			aux=realloc(entrada, (i+10)*sizeof(char));
		if(aux==NULL)
		{
			free(entrada)
			return NO_MEM;
		}
		entrada=aux;
		entrada[i]=letra;
	}
	entrada=realloc(entrada, (i+1)*sizeof(char));
	entrada[i]=0;

	ret=validaIn(juego, entrada, movida, elim);

	imprMsg(ret);

	return ret;
}
int
validaIn(tipoJuego * juego, char *s, int *movida, int *elim)
{
	int ret;
	int coord[4];
	int opcion;
	tipoPunto punto1, punto2;

	opcion = juego->parametros.opcion;

	if(strcmp(s, "quit")==0)
		ret=quit(juego);
	else if(strncmp(s, "save ", 5)==0)
		/*ret=save(juego, s+5)*/;
	else if(strcmp(s, "undo")==0)
	{	if(opcion != 3)
		{	if(*movida!=0)
			{	ret=cargaUndo(juego);
				*movida=0;
				imprimeTablero(juego);
			}
			else ret=DOS_UNDO;
		}
		else ret=SIN_UNDO;
	}
	else if(s[0]=='[' && validMov(juego->parametros, s, coord))
	{
		punto1.x=coord[0];
		punto1.y=coord[1];
		punto2.x=coord[2];
		punto2.y=coord[3];
		
		if(CoordValidas(juego, punto1, punto2))
		{	guardaUndo(juego);
			ret=posibleMov(juego, punto1, punto2, movida);
			if(ret==NO_ERROR_C)
				*movida=1;
			else if(ret == SIN_CAMINO)
				  ret=SIN_CAMINO;
		}
		else
			ret=INVALID_COOR;
				
	}
	else
		ret=MAL_INGRESO;

	free(s);

	return ret;
}


int
validMov(tipoParametros param, char *s, int vec[])
{
	int num1, num2, num3, num4;
	int v1, v2, v3, v4;
	sscanf(s, "[%d,%d]->[%d,%d]", &num1, &num2, &num3, &num4);

	vec[0]=num1;
	vec[1]=num2;
	vec[2]=num3;
	vec[3]=num4;	
	
	v1=(num1>=0 && num1<param.filas);
	v2=(num2>=0 && num2<param.columnas);
	v3=(num3>=0 && num3<param.filas);
	v4=(num4>=0 && num4<param.columnas);
		
	return v1 && v2 && v3 && v4;
	
}
